﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CapaDeDominio;
using System.Data.Entity.ModelConfiguration;
using System.ComponentModel.DataAnnotations;

namespace CapaDeDatos.EF.ORM
{
    class InstrumentoMapping : EntityTypeConfiguration<Instrumento>
    {
        public InstrumentoMapping()
            : base()
        {
            ToTable("instrumento");
            HasKey(s => s.Codigo);
            Property(s => s.Codigo)
                .HasColumnName("codigo")
                .IsRequired()
                .HasDatabaseGeneratedOption(System.ComponentModel.DataAnnotations.DatabaseGeneratedOption.None);
            HasRequired(s => s.Tipo)
            .WithMany()
            .Map(d => d.MapKey("tipo"));             
            Property(s => s.Marca)
                .HasColumnName("marca")
                .IsRequired();
            Property(s => s.Modelo)
                .HasColumnName("modelo")
                .IsRequired();
            Property(s => s.AnioFabricacion)
                .HasColumnName("aniofabricacion");
            Property(s => s.Caracteristicas)
                .HasColumnName("caracteristicas");
            Property(s => s.Alquiler)
                .HasColumnName("alquiler");
            HasMany<Sala>(s => s.Salas)
                .WithMany(i => i.Instrumentos)
                .Map(m => m.ToTable("detalle_sala_instrumento")
                    .MapLeftKey("codigo_instrumento")
                    .MapRightKey("codigo_sala"));
            HasMany<Reserva>(s => s.Reservas)
                .WithMany(i => i.InstrumentosAdicionales)
                .Map(m => m.ToTable("detalle_reserva_instrumento")
                    .MapLeftKey("codigo_instrumento")
                    .MapRightKey("codigo_reserva"));  
        }
    }
}
